package stream;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zxc
 * @date 2023/04/09 22:08
 **/
public class StreamDemo02 {
    public static void main(String[] args) {
        // 1.创建List集合
        List<String> stringCollection = new ArrayList<>();
        stringCollection.add("ddd2");
        stringCollection.add("aaa2");
        stringCollection.add("bbb1");
        stringCollection.add("aaa12");
        stringCollection.add("bbb3");
        stringCollection.add("ccc");
        stringCollection.add("bbb2");
        stringCollection.add("ddd1");

        // anyMatch ：即，匹配到第一个符合条件的list集合对象，直接进行返回;
        // 即，用来判断当前list集合中，是否存在符合条件的对象;
        boolean anyStartsWithA = stringCollection.stream()
                                    .anyMatch((s) -> s.startsWith("a"));
        System.out.println(anyStartsWithA);

        // allMatch ：即，匹配该集合中所有元素是否都是满足该条件;
        // 即，用来判断当前集合中是否有元素不满足该条件;
        boolean allStartsWithA = stringCollection.stream()
                        .allMatch((s) -> s.startsWith("a"));
        System.out.println(allStartsWithA);

        // noneMatch ；即，用于匹配集合中所有元素是否都不满足该条件;
        // 即，用来判断集合中是否有元素满足该条件;
        boolean noneStartsWithZ = stringCollection.stream()
                        .noneMatch((s) -> s.startsWith("z"));
        System.out.println(noneStartsWithZ);

        // count（终端操作） ：即，用于统计经过filter等等一系列操作后，所满足条件的元素数量;
        long startsWithB = stringCollection.stream()
                        .filter((s) -> s.startsWith("b"))
                        .count();
        System.out.println(startsWithB);
    }
}
